package com.tiancheng.trade.merchant.dto.requestdto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @Author: kellen
 * @Description: 商户进件注册信息
 * @Date: create in 2024/12/2 15:22
 */
@Data
public class MerchantPayRegVO implements Serializable {
    /**
     * 对接平台方的用户id 。平台方自己定义，建议与自身用户ID绑定<p>必须<p/>
     */
    @NotBlank(message = "对接平台方的用户id不允许为空")
    private String accesserUserId;
    /**
     * 注册类型 <p>必须<p/>
     * 00：企业商户
     * 01：个人工商户
     * 02：小微商户
     * 03：机关事业单位或社会团体
     * 05:民办非企业
     */
    @NotBlank(message = "注册类型不允许为空")
    private String regMerType;
    /**
     * 法人身份证姓名<p>必须<p/>
     */
    @NotBlank(message = "法人身份证姓名不允许为空")
    private String legalName;
    /**
     * 法人身份证号 <p>必须<p/>
     */
    @NotBlank(message = "法人身份证号不允许为空")
    private String legalIdcardNo;
    /**
     * 法人手机号 <p>必须<p/>
     */
    @NotBlank(message = "法人手机号不允许为空")
    private String legalMobile;
    /**
     * 法人邮箱 开通泛账户必传
     */
    private String legalEmail;
    /**
     * 法人证件开始日期 <p>必须<p/>
     */
    @NotBlank(message = "法人证件开始日期不允许为空")
    private String legalCardBeginDate;
    /**
     * 法人代表证件截止日期 <p>必须<p/>
     */
    @NotBlank(message = "法人代表证件截止日期不允许为空")
    private String legalCardDeadline;
    /**
     * 法人性别 企业类型为小微商户时必填，参数按国际标准传
     * 0-未知的性别
     * 1-男性
     * 2-女性
     * 5-女性改（变）为男性    6-男性改（变）为女性    9-未说明的性别
     */
    private Integer legalSex;
    /**
     * 法人职业 企业类型为小微商户时必填
     * 0-各类专业、技术人员
     * 1-国家机关、党群组织、企事业单位的负责人
     * 2-办事人员和有关人员
     * 3-商业工作人员
     * 4-服务性工作人员
     * 5-农林牧渔劳动者
     * 6-生产工作、运输工作和部分体力劳动者
     * 7-不便分类的其他劳动者
     */
    private Integer legalOccupation;
    /**
     * 法人家庭地址
     * 商户类型为非小微，beneficiary_list为空，法人作为唯一受益人必填
     */
    private String legalmanHomeAddr;
    /**
     * 商户营业名称 <p>必须<p/>
     */
    @NotBlank(message = "商户营业名称不允许为空")
    private String shopName;
    /**
     * 开户行行号 <p>必须<p/>
     */
    @NotBlank(message = "开户行行号不允许为空")
    private String bankNo;
    /**
     * 账户类型 <p>必须<p/>
     * 0:个人账户  1:公司账户
     */
    @NotBlank(message = "账户类型不允许为空")
    private String bankAcctType;
    /**
     * 开户行帐号 <p>必须<p/>
     */
    @NotBlank(message = "开户行帐号不允许为空")
    private String bankAcctNo;
    /**
     * 开户帐号名称 <p>必须<p/>
     * 对公账户填写公司名称，需与营业执照名称保持一致
     * 个人账户填写法人姓名
     */
    @NotBlank(message = "开户帐号名称不允许为空")
    private String bankAcctName;
    /**
     * 营业省份id <p>必须<p/>
     */
    @NotBlank(message = "营业省份id不允许为空")
    private String shopProvinceId;
    /**
     * 营业市id <p>必须<p/>
     */
    @NotBlank(message = "营业市id不允许为空")
    private String shopCityId;
    /**
     * 营业区id <p>必须<p/>
     */
    @NotBlank(message = "营业区id不允许为空")
    private String shopCountryId;
    /**
     * 社会信用统一代码/营业执照号
     * 00：企业商户（必填）
     * 01：个人工商户（必填）
     * 02：小微商户（选填）
     * 03：机关事业单位或社会团体（必填）
     */
    private String shopLic;

    @NotBlank(message = "营业地址补充信息不能为空")
    private String shopAddrExt;

    /**
     * 营业执照有效期-开始
     */
    private String shopLicenseBeginDate;
    /**
     * 营业执照有效期-结束
     */
    private String shopLicenseEndDate;

    /**
     * 行业类别编码
     */
    @NotNull(message = "行业类别编码不允许为空")
    private String mccCode;

    /**
     * 控股股东姓名
     */
    private String shareholderName;
    /**
     * 控股股东证件号，控股股东身份证
     */
    private String shareholderCertno;
    /**
     * 控股股东证件证件类型:1 身份证
     */
    private String shareholderCertType;
    /**
     * 控股股东证件开始日期
     */
    private String shareholderCertBeginDate;
    /**
     * 控股股东证件有效期
     */
    private String shareholderCertExpire;
    /**
     * 控股股东家庭地址
     */
    private String shareholderHomeAddr;

    /**
     * 申请开通的能力
     */
    private List<MerchantPayRegProduct> product;

    @Data
    public static class MerchantPayRegProduct{
        /**
         * 开通业务id
         * 常用：
         * 0-银联卡（1）
         * 1-全民付（86）
         * 2-POS通（68）
         * 4-营销联盟（40）
         * 8-公共支付-通用（9）
         * 16-代付业务（74）
         * 21-统一会员卡（37）
         * in1-APP支付（in1）
         * in2-H5支付（in2）
         * in3-公众号支付（in3）
         * in4-小程序支付（in4）
         */
        private String productId;
    }

    /**
     * 商户进件上传的证件照
     */
    private List<MerchantPayPivRegVO> picList;

}
